This invention relates generally to the field of computer systems. More particularly, a system and methods are provided for applying a partial page change to a browser page formatted according to Hypertext Markup Language (HTML) or another browser interpretable format.
In a typical browser page, descriptive ‘markup’ codes, commonly referred to as tags, delineate, identify, and organize entities of a page into a hierarchical structure of HTML elements. Each element may contain browser-displayable text, one or more hyperlink references to other pages, a table, an image, or some other type of content.
Usually, a tag delimits an HTML element by positioning page content between a matched ‘starting’ and ‘ending’ tag pair. A tag may define a block-level element of a page (e.g., a table, a paragraph), a higher-level structure element of a page (e.g., a body, or a head) or a lower-level inline element (e.g., a font change or a line break).
For example, a table may be delineated in HTML with a beginning tag <TABLE> and an ending tag </TABLE>. Further, each row within a table may be delineated with a <TR> and </TR> tag pair, and each table row may comprise one or more data cells, each of which may be delineated with a <TD> and </TD> tag pair. A data cell element delineated by a matching pair of <TD> and </TD> tags may comprise one or more other elements, including another table.
As illustrated in the table example above, HTML element tags are typically hierarchically nested in a document, often many levels deep; however, a tag pair/element in a properly constructed HTML document never overlaps another tag pair/element. Stated alternatively, an inner element, (e.g., a table row), is always contained completely within an outer element, (e.g., a table).
Each HTML element may comprise an associated identifier attribute, sometimes referred to as a tag identifier. An identifier may be associated with a single element, or it may be associated with an element containing a group or set of elements. A browser, when displaying a page, may use an identifier to locate an element within an HTML document hierarchy. Or, a script, executing in a browser, may use an identifier to reference a particular element.
An <HTML> element constitutes the top-most element of a page. It typically comprises a <HEAD> element and a <BODY> element. The <HEAD> element may comprise information concerning the page, such as a page title, a page description, and a page script type (e.g., JavaScript™).
Displayable content of a page is usually delimited by a <BODY> element, which typically includes one or more block-level and/or inline elements. Often, a majority of the browser-displayable content within a body element of a page comprises one or more tables.
Generally, a block-level element may contain inline elements as well as other block-level elements; therefore, a block-level element is usually larger in size than an inline element. Normally, inline elements contain data (e.g., text) and other inline elements. In particular, an ‘anchor’ (<A>) inline element often comprises a hyperlink defining a reference between a source anchor (i.e., the source of the anchor element, usually the current HTML page/browser) and a destination anchor, typically a Uniform Resource Locator (URL) to another HTML page. A source anchor may refer to a location where a hyperlinked page is to be sent, typically by a server, when the hyperlink is selected.
In one type of existing page browsing system, a client browser may submit a request for a page to an origin server, such as a web server, when a hyperlink is selected. In response to the page request, which may comprise a Uniform Resource Locator (URL), the origin server typically generates the page identified by the request and returns the requested page to the client browser.
Another system comprises a caching server configured to receive page requests from a client browser and to communicate with an origin server. When a page request is received, it is compared against currently cached pages and/or previous page requests. If the requested page is found, the caching server serves it to the client browser. If the requested page is not found, the caching server may retrieve the page from the origin server, store it in a cache using the URL identified in the page request as a key, and serve the page to the client browser.
In either of these systems, content of an entire page is transmitted, either directly from an origin server or via a caching server, to a client browser in response to a page request.
For example, a first page displayed in a client browser may comprise a page of a financial web site that accepts a stock ticker symbol as a parameter for a current stock quote search. In response to a request for a quote search, the client browser may retrieve and display a second page comprising a quote for the specified stock. The newly displayed second page may also include other elements, such as a site menu bar, a banner advertisement and/or other content common to both the first page and the second page.
In this example, all the displayable and non-displayable elements of the second page, including elements indistinguishable from corresponding elements of the first page, such as the site menu bar, are transferred to the client browser when the first page is updated to the second page.
Even though the difference between a first page and a second page may constitute only a minor change, such as a table element comprising a current stock quote, it is common behavior in today's browsing environments for the full content of a second page to be transmitted to a client browser in response to an update request by a first page. As a result, a client browser may appear unresponsive or sluggish while retrieving and displaying a requested page.
Many modern browsers wait until all of the elements of a requested page are received before displaying the page. As a result, a browser may flicker or display a blank page for a significant period of time, especially if the requested page comprises a large number of elements and/or nested elements (e.g., tables within tables). Such a display disruption may diminish a browsing experience.
In addition, an origin server or caching server may more easily become overburdened while attempting to satisfy a browser page request, due to client browsers retrieving redundant page elements when navigating from one page to another.